package cn.qingyun.gis.modules.express.service;

import cn.hutool.core.lang.tree.Tree;
import cn.qingyun.gis.modules.express.entity.ExpressProofread;
import cn.qingyun.gis.modules.express.entity.ExpressRegion;
import cn.qingyun.gis.modules.express.entity.ImportExpressExcel20230727;
import cn.qingyun.gis.modules.express.entity.PermRegionNode;
import cn.qingyun.gis.modules.express.entity.dto.ExportExpressProofreadDto;
import cn.qingyun.gis.modules.express.entity.dto.ExpressRegionNodeDto;
import cn.qingyun.gis.modules.express.entity.dto.NearbyChannelDto;
import cn.qingyun.gis.modules.express.request.ExpressProofreadRequest;
import cn.qingyun.gis.modules.express.request.ExpressQueryRequest;
import cn.qingyun.gis.modules.express.request.NearbyChannelRequest;
import cn.qingyun.gis.modules.express.request.QueryRequest;
import cn.qingyun.gis.modules.scenes.entity.UniAddrRegion;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.TreeMap;

/**
 * <p>
 * 快递地址勘误 服务类
 * </p>
 *
 * @author miyunguo
 * @since 2023-07-27
 */
public interface IExpressProofreadService extends IService<ExpressProofread> {
    /**
     * 快递未勘误地址列表查询
     */

    IPage<ExpressProofread> queryList(ExpressQueryRequest expressQueryRequest);

    /**
     * 快递地址勘误
     */
    String expressProofread(ExpressProofreadRequest expressProofreadRequest);

    /**
     * 根据分页进行快递勘误批量导出接口
     */

    IPage<ImportExpressExcel20230727> exportExpressExcelBatch(Page<ImportExpressExcel20230727> page);


    /**
     * 根据工号直接返回未勘误列表 （新版接口）
     */

    IPage<ExpressProofread> queryUnProofread(ExpressQueryRequest expressQueryRequest);

    /**
     * 根据工号进行网格区域权限判定
     */

    TreeMap<String, String> areaPermissionByNum(TreeMap<String, String> decryptedMap);

    /**
     *根据工号进行网格区域权限判定 - 友商特定
     * */
    TreeMap<String, String>  areaYsPermissionByNum(String telNum);

    /**
     * 快递全量明细列表查询
     */

    IPage<ExportExpressProofreadDto> queryDetailList(Page<ExportExpressProofreadDto> page, Integer kwStatue,String regionCityCode);

    /**
     * 使用JTS进行快递地市、区县、网格、网格编码匹配
     */

    void matchGrid();


    /**
     * 根据工号返回级联区域权限
     */
    PermRegionNode regionList(String telNum);

    List<ExpressRegionNodeDto> sonRegionList(String code);

    void matchBelongGrid();

    IPage<NearbyChannelDto> nearbyChannel(NearbyChannelRequest request);


    Object queryExpressById(QueryRequest request);

    Object queryTakeawayById(QueryRequest request);

    Object queryCarById(QueryRequest request);

    List<Tree<String>> getRegionList();

    /**
     * app级联区域权限列表查询
     * @return
     */
    List<Tree<String>> getAppRegionListNew(String regionCode,String regionName,Integer roleType);

    List<UniAddrRegion> getGridList(String code);
}
